/**
 * 拦截特殊ip,防止爬虫
 * options: 中间件的配置项,框架会将 app.config[${middlewareName}] 传递进来
 * app: 当前应用 Application 的实例
 * 每次路由变化都会触发 中间件
 */
module.exports = (options, app) => {
  return async function forbidipMiddleware (ctx, next) {
    /**
     * 要屏蔽的ip
     * 1、从数据库获取
     * 2、从参数传入
     */
    console.log(options);
    console.log(ctx.request.ip);
    // 获取客户端的ip
    var sourceIp = ctx.request.ip;
    const match = options.ip.some(val => {
      if (val == sourceIp) {
        return true;
      }
    });

    if (match) {
      ctx.status = 403;
      // message 接受的字符不能有中文,否则会报错
      // ctx.message = 'Your IP has been blocked';
      ctx.body = '您的ip已经被屏蔽';
    } else {
      await next();
    }
  }
}